package org.reyton.dao;

import org.reyton.entity.BizClaimVoucher;
import org.reyton.entity.SysEmployee;

import java.io.Serializable;
import java.util.List;

/**
 * 报销单表的Dao接口
 * Created by reyton on 16-12-1.
 */
public interface BizClaimVoucherDao {

    /***
     * 新增一张报销单
     * @param bizClaimVoucher 报销单实体
     */
    void save(BizClaimVoucher bizClaimVoucher);

    /***
     * 修改总价
     * @param bizClaimVoucher 报销单实体
     */
    void updateAccount(BizClaimVoucher bizClaimVoucher);

    /***
     * 修改事由
     * @param bizClaimVoucher 报销单实体
     */
    void updateDes(BizClaimVoucher bizClaimVoucher);

    /***
     * 修改状态
     * @param bizClaimVoucher 报销单实体
     */
    void updateStatus(BizClaimVoucher bizClaimVoucher);

    /***
     * 根据报销单创建人ID查询报销单
     * @param sysEmployee 员工实体
     * @param pageSize 单页面记录数
     * @param pageIndex 页码
     * @return 单页本人报销单的集合
     */
    List<BizClaimVoucher> findPageById(SysEmployee sysEmployee,int pageSize,int pageIndex);

    /***
     * 根据员工ID查询总记录数
     * @param sysEmployee 员工实体
     * @return 总记录数
     */
    long findCountById(SysEmployee sysEmployee);

    /***
     * 删除报销单
     * @param bizClaimVoucher 报销单实体
     */
    void delete(BizClaimVoucher bizClaimVoucher);

    /***
     * 根据ID查询报销单
     * @param id 报销单ID
     * @return 报销单实体
     */
    BizClaimVoucher findById(int id);

    /***
     * 根据待审核人查询并分页报销单集合
     * @param NextDealSn 待审核人编号
     * @param pageSize 页面大小
     * @param pageIndex 页码
     * @return 报销单集合
     */
    List<BizClaimVoucher> findByNextDealSn(String NextDealSn,int pageSize,int pageIndex);
}